A. Field of the Invention
The present invention generally concerns the prioritization of requestors utilizing a digital computer memory servicing a plurality of such requestors. The present invention specifically concerns that modification which needs to be made to the snapshot scheme of prioritizing requests to a digital computer memory when two requestors share a single memory port. Since such modification will be seen to allow that requests arising from each such two requestors sharing a said prioritized single memory port will both be honored, in sequence, during a single priority scan, then such modification is not perceived to be of much efficacy over according each such requestor a separate port if (1) the requestors are often in contention and (2) separately prioritized ports are readily available. But if (1) separately prioritized ports are minimized in numbers in order to save time in the priority circuitry prioritizing simultaneous requests received at such, and (2) some two requestors are not often simultaneously contending to request a digital memory, then the modification to memory priority, specifically snapshot priotity, of the present invention which accords that two requestors should share but a single prioritized memory port is efficient in allowing n+1 requestors to utilize an n-wide priority network, and effective in minimizing the delay encountered in a priority network since an n-wide network is generally faster than an (n+1)-wide network. Further specifically, the present invention teaches that a memory maintenance exerciser type requestor, being a requestor generally but infrequently requesting a memory for the purposes of the operational validity checking and maintenance thereof, should share a single memory port with a normal requestor of such memory, nominally called an Instruction Processor, or IP.
B. Description of the Prior Art
The environment of the apparatus and method of the present invention is a very large scale, very high performance, digital computer memory unit such as is described in U.S. patent application Ser. No. 596,130. It is a known maintainability feature in the prior art for very large scale, very high performance, computer memory units that the memory stores of such units should be dynamically partitionable into those dedicated to applications and those upon which, the memory unit remaining on-line, operational validity checking and maintenance may be exercised. The utility of exercising maintenance--being the exercise and validity checking of logic, error correction/detection logic, and memory stores--upon part of the memory stores of a very large scale memory unit while such large scale memory unit is, in the areas of stores not being exercised for maintenance, elsewise devoted to applications operation, is that such maintenance may be often performed with minimum conflict to the system utilization of that system resource, the memory unit, which may be very expensive. The on-line maintenance exercise of parts of the stores of a very large scale memory unit also provides the maximum potential for the detection and isolation of intermittent fault phenomena within the logics of such memory units as well as within those stores of such units detached to on-line maintenance testing.
It is known in the prior art that the maintenance exerciser which administers the regimen of read, write, and partial write on-line testing to a portion of the stores of a high performance memory unit, which memory unit is elsewise involved in servicing systems applications with the other stores contained therein, may be either internal to such memory unit or external to such memory unit. In either case, however, there is usually an external agency to the memory which does both configure the memory for test (i.e., designate which of the memory stores are to be devoted to on-line memory test and which are to be devoted to systems applications) and shepherd the progress of such testing (if not actually administering same), obtaining the results thereof. In other words, even if a maintenance exerciser is internal to a very large scale memory unit, the fault detections of such maintenance exerciser needs be communicated to the computer system, and such computer system needs (if possible) reconfigure such high performance memory unit to operability, through an interface to such high performance memory unit. Such an interface is normally in the prior art a memory port fully capable of normal memory command, read, and write operation. The device connected to such an interface is normally called a maintenance processor, or a System Support Processor(SSP).
It is also known in the prior art that a single memory unit may communicate with a plurality of requestors, and may employ diverse priority schemes in the determination of which of such requestors shall be next serviced. One of such prior art priority schemes for the resolution of access between requestors communicating with a single memory unit is "snapshot" priority determination. In a "snapshot" priority scheme, the total one or ones of requestors which are attempting communication with the memory unit at a particular time will be frozen, or "snapped", into a queue. Such a queue will be completely serviced in priority order before any request not originally "snapped", or any reinstitution of "snapped" requests once serviced, will be registered or considered. Such scheme is tantamount to the taking of a photographic "snapshot" of pending memory requests, and servicing all such requests in priority order prior to the taking of another "snapshot".
An obvious accommodation between the prior art fully-functional ported access which is taken of a memory unit for the purposes of maintenance thereof (including through an internal maintenance exerciser operating on-line to the normal system operation of such memory unit) and a snapshot priority scheme at the requestor's interface to such memory unit is that the maintenance port, and the maintenance processor or system support processor requestor connected thereto, should be handled in such snapshot priorities equivalently to other system requestor types. Such is generally the scheme in the prior art, and it may be noted that the maintenance port is, in accordance with the test function performed thereon, normally accorded the lowest system priority in the snapshot or any other memory priority scheme.
It is also known in the prior art to configure a snapshot priority scheme so that requests from the exerciser and requests from a normal requestor external to such memory will share a single port of access to such memory. The utility of such sharing is that the breadth of the priority determination logics may be narrowed by the fact that the exerciser and a normal requestor do share a single port, and all internal control and data paths of the memory by which the exerciser, whether internal or external, does exercise such memory are, of course, identical to the paths elsewise utilized by the normal requestor sharing the same port of access. The process of "sharing" implies, however, its own, subsidiary, priority determination scheme. In the prior art, this subsidiary priority determination scheme was operationally effective, and was based on historical record keeping. Mainly, requests arising from the exerciser and from the normal requestor with which it shared a port were resolved, as between themselves, before further submission to the normal, snapshot, priority request scheme. A history was kept of each request occurring from the exerciser and from that normal requestor sharing the same port. If both the exerciser and the requestor sharing the same port made requests during the same priority snap, then normally the normal requestor only would be passed to further priority determination, wherein it would be ultimately honored in normal snapshot priority. A history of this occurrence was kept. Upon a next subsequent exerciser report request upon a next subsequent priority snap, such exercise port request would be honored regardless of whether there should be another, subsequent, request from the normal requestor sharing the same port or not. If there was such a next subsequent request from the normal requestor sharing the same port, it would be held waiting until the next priority snap to be gated to snapshot priority in preference over further requests of the exerciser, should such be present. The sharing of a port between an exerciser and a normal requestor thus was accomplished with first one, and then the other, going foremost upon any simultaneous requests from both. In order to determine which one should be foremost at any one time, history keeping of the requests of both was required.